Many companies and other organizations operate computer networks that interconnect numerous computing systems to support their operations, such as with the computing systems being co-located (e.g., as part of a local network) or instead located in multiple distinct geographical locations (e.g., connected via one or more private or public intermediate networks). For example, distributed systems housing significant numbers of interconnected computing systems have become commonplace. Such distributed systems may provide back-end services to web servers that interact with clients. Such distributed systems may also include data centers that are operated by entities to provide computing resources to customers. Distributed systems may include various types of entities that generate and/or store data, such as traditional relational databases and non-relational databases as well as entities that generate streams of data. Consumers of data may seek to obtain data from any of these types of data sources, and each type of data source may have its own distinct interface.
Relational database management systems (RDBMS) have been in wide use for decades. Relational databases have a number of characteristics that have led to their widespread adoption, especially for transaction processing systems. Such characteristics include support for the properties of atomicity, consistency, isolation, and durability (i.e., ACID), as well as the backing of well-established vendors with a vast knowledge base and sophisticated tool sets. A common technique for accessing and manipulating RDBMS data is to use SQL (Structured Query Language), a special-purpose programming language designed for relational database systems. In an RDBMS, data is represented in the form of relational tables in which each row has the same set of columns.
More recently, the rate of data acquisition from such sources as web server logs or sensors has grown rapidly and exposed scalability problems of relational databases. Accordingly, a number of non-relational approaches to data management have gradually gained popularity. Some of these approaches are collectively referred to as “NoSQL” databases, as they typically do not rely on SQL as their query language. Instead of using SQL, different non-relational database vendors have tended to use custom languages and interfaces. Many non-relational database systems typically promise excellent write performance as well as distributed and fault-tolerant architectures designed to overcome some of the perceived shortfalls of traditional RDBMSs. These benefits are often achieved at the cost of relaxing some of the ACID constraints that are more strictly enforced by RDBMSs.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning “having the potential to”), rather than the mandatory sense (i.e., meaning “must”). Similarly, the words “include,” “including,” and “includes” mean “including, but not limited to.”